from langchain_core.tools import tool


@tool(description="", name_or_callable="计算器")
def calculate(expression: str) -> str:
    """🧮 数学计算工具
    
    功能：执行数学计算并返回结果
    
    适用场景：
    - 基础数学运算：加减乘除（+、-、*、/）
    - 支持括号优先级计算
    - 支持小数运算
    - 支持复杂数学表达式
    
    参数：
    - expression (str): 需要计算的数学表达式，如 "25 * 4 + 10" 或 "(100 + 50) / 3"
    
    返回：
    - str: 计算结果，格式为 "计算结果：表达式 = 结果"
    
    使用示例：
    - calculate("25 * 4 + 10") -> "计算结果：25 * 4 + 10 = 110"
    - calculate("100 / 5") -> "计算结果：100 / 5 = 20.0"
    """
    try:
        # 安全的数学计算
        allowed_chars = set('0123456789+-*/().,e ')
        if not all(c in allowed_chars for c in expression):
            return "错误：表达式包含不允许的字符"
        
        result = eval(expression)
        return f"计算结果：{expression} = {result}"
    except Exception as e:
        return f"计算错误：{str(e)}"